import request from '@/utils/request'

// 查询字典数据列表
export function listData(query) {
  return request({
    url: '/system/dict/data/list',
    method: 'get',
    params: query
  })
}

// 查询字典数据详细
export function getData(dictCode) {
  return request({
    url: '/system/dict/data/' + dictCode,
    method: 'get'
  })
}

let dictDataMap = {};
// 根据字典类型查询字典数据信息
export function getDicts(dictType) {
	return new Promise((resolve, reject) => {
		let data = dictDataMap[dictType];
		if(!data){
			dictDataMap[dictType] = {};
			request({
				url: '/system/dict/data/type/' + dictType,
				method: 'get'
			}).then( res => {
				dictDataMap[dictType] = res
				resolve(res);
				setTimeout(() => {
					dictDataMap[dictType] = null;
					delete dictDataMap[dictType]
				}, 100);
			}).catch(err=> {
				reject(err)
			})
		}
		else{
			if(data.data){
				resolve(data);
			}
			else{
				let retries = 100;
				let interval = setInterval( () => {
					console.log('interval');
					if(dictDataMap[dictType] && dictDataMap[dictType].data){
						resolve(dictDataMap[dictType]);
						clearInterval(interval);
					}
					else if(retries -- ==0){
						clearInterval(interval);
					}
				}, 50);
			}
		}
	});
}

// 新增字典数据
export function addData(data) {
  return request({
    url: '/system/dict/data',
    method: 'post',
    data: data
  })
}

// 修改字典数据
export function updateData(data) {
  return request({
    url: '/system/dict/data',
    method: 'put',
    data: data
  })
}

// 删除字典数据
export function delData(dictCode) {
  return request({
    url: '/system/dict/data/' + dictCode,
    method: 'delete'
  })
}

// 导出字典数据
export function exportData(query) {
  return request({
    url: '/system/dict/data/export',
    method: 'get',
    params: query
  })
}
